//
//  HMHomeTableViewController.swift
//  Weibo12
//
//  Created by HM on 15/12/26.
//  Copyright © 2015年 itheima. All rights reserved.
//

import UIKit
import SVProgressHUD
class TFHomeViewController: TFVisitorTableViewController {
    
  
    // 可重用标识符
    private let HMHomeCellReUseId = "HMHomeCellReUseId"
    //懒加载当前视图（tableView）对应的视图模型
    lazy var statusListViewModel:TFStausListViewModel = TFStausListViewModel()
    // 定义模型数组，供 tableView 的数据源使用
    private var statuses: [TFStatus]?
    // MARK: - 设置 UI
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 判断是否有登录
        if userLogon == false {
            // 设置内容
            visitorView.setupInfo(nil, message: nil)
            // 如果没有登录，下面的逻辑就不执行
            return
        }
        
        setupUI()
        // 加载首页数据
        loadData()
    }
    
    
    private func setupUI(){
        navigationItem.leftBarButtonItem = UIBarButtonItem(imageName: "navigationbar_friendsearch", target: nil, action: "")
        navigationItem.rightBarButtonItem = UIBarButtonItem(imageName: "navigationbar_pop", target: self, action: "pop")
        
        setupTableView()
    }
    
    // 设置 tableView
    private func setupTableView(){
        // 注册cell
        tableView.registerClass(TFStatusCell.self, forCellReuseIdentifier: HMHomeCellReUseId)
        tableView.contentInset = UIEdgeInsetsMake(-10, 0, 0, 0)
        //自动计算行高
        tableView.rowHeight = UITableViewAutomaticDimension
        tableView.estimatedRowHeight = 300
        //隐藏分割线
        tableView.separatorStyle = .None
      tableView.backgroundColor = UIColor(white: 0.95, alpha: 1)
     
    }
    
    // MARK: - 私有方法
    /**
    加载首页数据
    */
   private func loadData(){
    
    statusListViewModel.loadData { (isSuccessed) -> () in
        
        if isSuccessed {
        //刷新数据
        self.tableView.reloadData()
        }else{
        SVProgressHUD.showErrorWithStatus("请求失败")
       
        
        }
        
        //结束刷新
        self.endRefresh()
    }
    
  }
   //结束刷新
    func endRefresh(){
    
    pullUpView.stopAnimating()
        
    
    }
    
    
    // MARK: - 监听方法
    
    @objc private func pop(){
        print("pop点击")
        // 要实现的功能：从第1级跳到第2级控制器里面，第2级控制器左上角显示第1级控制器的titlt
        // 从第2级往后 push 出来的新控制器左上角都显示返回
        let vc = TFTempViewController()
        navigationController?.pushViewController(vc, animated: true)
    }
    
    // MARK: - 懒加载pullView
    //上啦加载控件
    private lazy var pullUpView: UIActivityIndicatorView = {
        
        let indicator = UIActivityIndicatorView()
        
        //指定风格
        indicator.activityIndicatorViewStyle = .WhiteLarge
        indicator.color = UIColor.orangeColor()
        //指定大小
        indicator.sizeToFit()
        
        return indicator
    }()
    //刷新控件
//    private lazy var  tfRefreshControl:
}




// MARK: - tableView 的数据源与代理方法
extension TFHomeViewController {
    
    // 返回有多少行数据
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return statusListViewModel.statuses?.count ?? 0
    }
    
    // 返回每一行对应的 cell
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        // 必须注册
        let cell = tableView.dequeueReusableCellWithIdentifier(HMHomeCellReUseId, forIndexPath: indexPath) as! TFStatusCell
        // 设置数据
        cell.statusViewModel = statusListViewModel.statuses![indexPath.row]
        
              return cell
    }
    
    override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
        
        //如果显示最后一行的cell的话，就开始加载数据
        if indexPath.row == statusListViewModel.statuses!.count-1 && pullUpView.isAnimating() == false {
        
        pullUpView.startAnimating()
            
            //加载数据
            loadData()
        
        }
        
    }
    
}
